﻿Public Class ABM_Telefonos
    Dim acceso As New acceso
    Dim esNuevo As Boolean
    Dim comando As New SqlClient.SqlCommand
    Dim Telefono As New Telefono
    Dim idPersona As Integer = Nothing
    Public Property _idPersona As Integer
        Get
            Return idPersona
        End Get
        Set(value As Integer)
            idPersona = value
        End Set
    End Property

    Private Sub cargarGrilla()
        Dim tabla As New Data.DataTable()
        If idPersona = 0 Then
            tabla = acceso.ejecutar("Select * FROM Vista_Telefonos Where idPersona is null")
        Else
            tabla = acceso.ejecutar("Select * FROM Vista_Telefonos Where idPersona = " & idPersona)
        End If
        dgv_Telefonos.DataSource = tabla
        acomodarGrilla()
        
    End Sub

    Public Sub insertTelefono(ByVal tel As Telefono)
        Dim sql As String
        comando = New Data.SqlClient.SqlCommand
        If idPersona = 0 Then
            sql = "Insert INTO Telefono (numero,idTipoTelefono) VALUES (@numero,@idTipoTelefono)"
        Else
            sql = "Insert INTO Telefono (numero,idPersona,idTipoTelefono) VALUES (@numero,@idPersona,@idTipoTelefono)"
            comando.Parameters.AddWithValue("@idPersona", idPersona)
        End If


        comando.Parameters.AddWithValue("@numero", tel._numero)

        comando.Parameters.AddWithValue("@idTipoTelefono", tel._tipoTelefono._idTipoTelefono)
        acceso.ejecutarActualizaciones(sql, comando)
    End Sub

    Public Sub updateTelefono(ByVal tel As Telefono)
        Dim sql As String
        sql = "UPDATE Telefono SET numero = @numero, idTipoTelefono = @idTipoTelefono where idTelefono = @idTelefono"
        comando = New Data.SqlClient.SqlCommand
        comando.Parameters.AddWithValue("@numero", tel._numero)
        comando.Parameters.AddWithValue("@idTelefono", tel._idTelefono)
        comando.Parameters.AddWithValue("@idTipoTelefono", tel._tipoTelefono._idTipoTelefono)
        acceso.ejecutarActualizaciones(sql, comando)
    End Sub
    Private Sub acomodarGrilla()
        dgv_Telefonos.Columns("numero").HeaderText = "Telefono"
        dgv_Telefonos.Columns("numero").Width = 100
        dgv_Telefonos.Columns("nombre").HeaderText = "Tipo Telefono"
        dgv_Telefonos.Columns("nombre").Width = 100
        dgv_Telefonos.Columns("idTelefono").Visible = False
        dgv_Telefonos.Columns("idPersona").Visible = False
        dgv_Telefonos.Columns("idTipoTelefono").Visible = False
    End Sub

    Private Sub dgv_Telefonos_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dgv_Telefonos.Click, dgv_Telefonos.DoubleClick
        If dgv_Telefonos.SelectedRows.Count <> 0 Then
            txt_id_telefono.Text = dgv_Telefonos.SelectedRows(0).Cells("idTelefono").Value
            cmb_tipTel.SelectedValue = dgv_Telefonos.SelectedRows(0).Cells("idTipoTelefono").Value
            msk_NroTel.Text = dgv_Telefonos.SelectedRows(0).Cells("numero").Value
            esNuevo = False
        End If
    End Sub

    Private Sub btn_nuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_nuevo.Click
        esNuevo = True
        blanquear()

    End Sub

    Private Sub blanquear()
        msk_NroTel.Text = ""
        msk_NroTel.Focus()
        cmb_tipTel.SelectedIndex = -1
        dgv_Telefonos.ClearSelection()

    End Sub

    Private Sub btn_salir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_salir.Click
        'If MessageBox.Show("¿ Desea salir del ABM Telefono ?", "Atención", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
        Me.Close()
        'End If
    End Sub

    Private Sub btn_guardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_guardar.Click
        'Validaciones
        If msk_NroTel.Text = "" Then
            MessageBox.Show("El campo Numero no puede estar vacio", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            msk_NroTel.Focus()
            Return
        End If
        If cmb_tipTel.SelectedIndex = -1 Then
            MessageBox.Show("Debe seleccionar algun Tipo de Telefono", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            cmb_tipTel.Focus()
            Return
        End If



        Telefono._numero = msk_NroTel.Text
        Telefono._tipoTelefono._idTipoTelefono = cmb_tipTel.SelectedValue
        Telefono._tipoTelefono._nombre = cmb_tipTel.SelectedText

        If esNuevo = True Then
            insertTelefono(Telefono)
            cargarGrilla()
            blanquear()
            MessageBox.Show("Nuevo Telefono cargado con exito", "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.None)

        Else
            Telefono._idTelefono = Integer.Parse(txt_id_telefono.Text.ToString())
            updateTelefono(Telefono)
            cargarGrilla()
            blanquear()
            MessageBox.Show("Telefono actualizado con exito", "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.None)
        End If
        dgv_Telefonos.ClearSelection()

    End Sub

    Private Sub btn_eliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_eliminar.Click
        If dgv_Telefonos.SelectedRows.Count <> 0 Then
            Telefono._idTelefono = dgv_Telefonos.CurrentRow.Cells("idTelefono").Value
            Telefono._numero = dgv_Telefonos.CurrentRow.Cells("numero").Value
            If MessageBox.Show("Esta seguro que desea eliminar el telefono: " & Telefono._numero, "ATENCION", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) = Windows.Forms.DialogResult.Yes Then
                deleteTelefono(Telefono)
                cargarGrilla()
                blanquear()
            End If
        End If
    End Sub


    Public Sub deleteTelefono(ByVal tel As Telefono)
        Dim sql As String
        sql = "Delete Telefono where idTelefono = @idTelefono"
        comando = New Data.SqlClient.SqlCommand
        comando.Parameters.AddWithValue("@idTelefono", tel._idTelefono)
        acceso.ejecutarActualizaciones(sql, comando)


    End Sub


    Private Sub ABM_Telefonos_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        acceso.cargarCombo(cmb_tipTel, "TipoTelefono", "nombre", "idTipoTelefono")
        cargarGrilla()
        blanquear()
        esNuevo = True
    End Sub

    Private Sub btn_nuevo_Click_1(sender As System.Object, e As System.EventArgs) Handles btn_nuevo.Click

    End Sub
End Class